{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "26ca4996",
   "metadata": {},
   "source": [
    "# 巴特沃斯模拟滤波器\n",
    "\n",
    "设计一个巴特沃斯低通滤波器，其通带截止频率f_p=3000Hz，通带最大衰减R_p=2dB ，阻带截止频率f_s=6000Hz，阻带最小衰减A_s=30dB。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "08f6d55f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#导入使用的库\n",
    "import numpy as np\n",
    "from scipy import signal;from math import *\n",
    "import matplotlib.pyplot as plt\n",
    "from matplotlib.ticker import MaxNLocator,MultipleLocator\n",
    "\n",
    "#滤波器参数\n",
    "fp = 3000;fs = 6000 \n",
    "Rp = 2;As = 30\n",
    "\n",
    "#计算所需的巴特沃斯滤波器阶数\n",
    "N, Wn = signal.buttord(2*pi*fp,2*pi*fs,Rp,As,True) \n",
    "\n",
    "#计算巴特沃斯模拟滤波器的系统函数和频率响应\n",
    "b, a = signal.butter(N,Wn,'low',True) \n",
    "w, h = signal.freqs(b, a,np.logspace(3,5,1000))\n",
    "Hw = 20*np.log10(abs(h))\n",
    "\n",
    "#绘制滤波器的幅度响应\n",
    "fig,ax = plt.subplots();ax.semilogx(w/(2*pi),Hw)\n",
    "ax.grid(which = 'major',axis = 'both')\n",
    "ax.grid(which = 'minor',ls = '--')\n",
    "ax.set_title('巴特沃斯模拟低通滤波器');ax.set_xlabel('frequency')\n",
    "ax.set_xlabel('frequency/Hz')\n",
    "ax.set_ylabel(r'$ 20log_{10}| H ( \\omega ) | $')\n",
    "ax.yaxis.set_major_locator(MaxNLocator(11))\n",
    "ax.yaxis.set_minor_locator(MultipleLocator(2))\n",
    "plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签\n",
    "plt.rcParams['axes.unicode_minus'] = False #用来显示负号\n",
    "fig.savefig('./butter.png',dpi=500)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "e743a826",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
